Skip to content

Commit 69194a7

Browse files
committed
adjustments
1 parent a114931 commit 69194a7

File tree

2 files changed

+15
-56
lines changed

2 files changed

+15
-56
lines changed

kitsune/questions/tests/test_utils.py

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
from copy import deepcopy
2-
from unittest.mock import patch
32

43
from django.contrib.contenttypes.models import ContentType
54
from parameterized import parameterized
@@ -385,36 +384,3 @@ def test_topic_result_with_no_change(self):
385384
notes__contains="Dude, it is so topic1.",
386385
).exists()
387386
)
388-
389-
def test_topic_result_with_incomplete_transaction(self):
390-
question = QuestionFactory(topic=self.topic1, tags=[self.topic1.slug])
391-
classification_result = dict(
392-
action=ModerationAction.NOT_SPAM,
393-
topic_result=dict(
394-
topic=self.topic2.title,
395-
reason="Dude, it is so topic2.",
396-
),
397-
)
398-
399-
q_ct = ContentType.objects.get_for_model(question)
400-
401-
self.assertFalse(question.is_spam)
402-
self.assertFalse(
403-
FlaggedObject.objects.filter(content_type=q_ct, object_id=question.id).exists()
404-
)
405-
self.assertEqual(question.topic, self.topic1)
406-
self.assertEqual(set(tag.name for tag in question.my_tags), {self.topic1.slug})
407-
408-
with patch.object(question, "save", side_effect=Exception):
409-
with self.assertRaises(Exception):
410-
process_classification_result(question, classification_result)
411-
412-
question.refresh_from_db()
413-
414-
# Since one of the DB changes failed, they all should be rolled back.
415-
self.assertFalse(question.is_spam)
416-
self.assertEqual(question.topic, self.topic1)
417-
self.assertEqual(set(tag.name for tag in question.my_tags), {self.topic1.slug})
418-
self.assertFalse(
419-
FlaggedObject.objects.filter(content_type=q_ct, object_id=question.id).exists()
420-
)

kitsune/questions/utils.py

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,11 @@
77
from django.contrib.auth.models import User
88
from django.contrib.contenttypes.models import ContentType
99
from django.contrib.sessions.backends.base import SessionBase
10-
from django.db import transaction
1110

1211
from kitsune.flagit.models import FlaggedObject
1312
from kitsune.llm.questions.classifiers import ModerationAction
1413
from kitsune.products.models import Product, Topic
1514
from kitsune.questions.models import Answer, Question
16-
17-
# from kitsune.tags.models import SumoTag
1815
from kitsune.users.models import Profile
1916
from kitsune.wiki.utils import get_featured_articles as kb_get_featured_articles
2017
from kitsune.wiki.utils import has_visited_kb
@@ -189,25 +186,21 @@ def process_classification_result(
189186
reason=FlaggedObject.REASON_SPAM,
190187
)
191188
case _:
192-
if not (topic_title := result["topic_result"].get("topic")):
193-
return
194-
195-
try:
196-
topic = Topic.active.get(title=topic_title, visible=True)
197-
except (Topic.DoesNotExist, Topic.MultipleObjectsReturned):
198-
return
199-
200-
with transaction.atomic():
201-
flag_question(
202-
question,
203-
by_user=sumo_bot,
204-
notes=(
205-
"LLM classified as {topic.title}, for the following reason:\n"
206-
f"{result['topic_result']['reason']}"
207-
),
208-
status=FlaggedObject.FLAG_ACCEPTED,
209-
)
210-
if topic != question.topic:
189+
if topic_title := result["topic_result"].get("topic"):
190+
try:
191+
topic = Topic.active.get(title=topic_title, visible=True)
192+
except (Topic.DoesNotExist, Topic.MultipleObjectsReturned):
193+
return
194+
else:
195+
flag_question(
196+
question,
197+
by_user=sumo_bot,
198+
notes=(
199+
"LLM classified as {topic.title}, for the following reason:\n"
200+
f"{result['topic_result']['reason']}"
201+
),
202+
status=FlaggedObject.FLAG_ACCEPTED,
203+
)
211204
if question.topic:
212205
question.tags.remove(question.topic.slug)
213206
question.topic = topic

0 commit comments

Comments
 (0)